2026-10-13T00:50:41.6656578Z ##[group]Run npm run test:deploy
2026-10-13T00:50:41.6656621Z [36;1mnpm run test:deploy[0m
2026-10-13T00:50:41.6656636Z shell: /usr/bin/bash -e {0}
2026-10-13T00:50:41.6656645Z env:
2026-10-13T00:50:41.6656655Z   CARGO_TERM_COLOR: never
2026-10-13T00:50:41.6656729Z   CLOUDFLARE_ACCOUNT_ID: 1e6f2cffa3f445920836e8ebe446bb58
2026-10-13T00:50:41.6656740Z   WRANGLER_SEND_METRICS: false
2026-10-13T00:50:41.6656750Z ##[endgroup]
2026-10-13T00:50:41.7911342Z 
2026-10-13T00:50:41.7911604Z > test:deploy
2026-10-13T00:50:41.7911776Z > node --test "scripts/deploy/*.test.mjs"
2026-10-13T00:50:41.7911922Z 
2026-10-13T00:50:45.8223084Z error: no matching package named `base64` found
2026-10-13T00:50:46.1962465Z location searched: crates.io index
2026-10-13T00:50:46.1962610Z required by package `g1t-api v0.1.0 (/home/runner/work/repo/apps/api)`
2026-10-13T00:50:46.1962730Z note: offline mode (via `--offline`) can sometimes cause surprising resolution failures
2026-10-13T00:50:46.1962800Z help: if this error is too confusing you may wish to retry without `--offline`
2026-10-13T00:50:46.3151255Z ✔ the manifest matches every wrangler config in the repository (31.543268ms)
2026-10-13T00:50:46.3151429Z ✔ every wrangler.jsonc is found, and only checked-in ones (78.461235ms)
2026-10-13T00:50:46.3151526Z ✔ problems are found: an unlisted config, a later-stage binding, a wrong database, an unnamed KV (29.195118ms)
2026-10-13T00:50:46.3152772Z ✔ stages follow bindings: nothing binds to a unit that ships after it (51.308126ms)
2026-10-13T00:50:46.3153998Z ✔ inside a stage, a Worker that does not exist yet goes before those bound to it (1.40587ms)
2026-10-13T00:50:46.3155819Z ✔ Rust workers build with the shared script and the same wasm-opt level (0.84028ms)
2026-10-13T00:50:46.3168493Z ✔ shared crates and packages are read from workspace metadata (0.32025ms)
2026-10-13T00:50:46.3168788Z ✔ the runner's image is built from the runner crate and what it uses, on the base its lock names (0.36756ms)
2026-10-13T00:50:46.3180622Z ✔ services/runner/base.json records the base its folder builds (9.3944ms)
2026-10-13T00:50:46.3180725Z ✔ an image's hash ignores line endings, and its tags say what they are (207.582308ms)
2026-10-13T00:50:46.3193327Z ✔ only the lockfile entries the runner is built from name its image (0.42176ms)
2026-10-13T00:50:46.3193590Z ✔ the runner's deploy config names its image by reference, beside its wrangler.jsonc (22.814619ms)
2026-10-13T00:50:46.3194120Z ✔ the registry is asked for an image's manifest, without Docker (0.71707ms)
2026-10-13T00:50:46.3202271Z ✔ a push counts only when it ends with a digest, and is tried again (0.66698ms)
2026-10-13T00:50:46.3239768Z ✔ a static Linux binary is told from a dynamic one (0.76296ms)
2026-10-13T00:50:46.3239892Z ﹣ path dependencies agree with Cargo's own resolved graph (3292.489314ms) # cargo metadata could not resolve offline
2026-10-13T00:50:46.3239964Z ✔ every import that leaves a unit's folder is covered by its dependencies or inputs (172.036849ms)
2026-10-13T00:50:46.3240024Z ✔ a shared crate's change reaches every unit built from it, and no other (1.33907ms)
2026-10-13T00:50:46.3240078Z ✔ a shared package's change reaches what imports it (0.23634ms)
2026-10-13T00:50:46.3259425Z ✔ a crate's tests, benches and examples deploy nothing (0.80212ms)
2026-10-13T00:50:46.3289525Z ✔ a Rust file compiled only for tests is found from what declares it (1.38303ms)
2026-10-13T00:50:46.3289795Z ✔ this repository's test-only sources are read from git (294.741582ms)
2026-10-13T00:50:46.3290000Z ✔ decide: a change only to tests deploys nothing (1.40127ms)
2026-10-13T00:50:46.3290192Z ✔ own folders, declared inputs and root files (1.08542ms)
2026-10-13T00:50:46.3290390Z ✔ a Cargo.lock change reaches only crates that use what changed (0.36193ms)
2026-10-13T00:50:46.3290584Z ✔ a package-lock change reaches through workspace links (0.58575ms)
2026-10-13T00:50:46.3820651Z ✔ decide: changed units deploy, others wait, unknown ones deploy (0.34223ms)
2026-10-13T00:50:46.3820798Z ✔ decide: --force deploys unchanged units; a commit missing from history deploys (0.18758ms)
2026-10-13T00:50:46.3823762Z ✔ decide: Cargo.lock counts only where it reaches (0.80846ms)
2026-10-13T00:50:46.3825131Z ✔ decide: the runner's image rebuilds only when what it is built from changed (0.22896ms)
2026-10-13T00:50:46.3853325Z ✔ the plan as data: migrations, and each stage's units in jobs that share a build (1.41131ms)
2026-10-13T00:50:46.3853420Z ✔ units are picked by short name, folder or Worker name (0.65189ms)
2026-10-13T00:50:46.3853468Z ✔ a CI job installs only what its units need (1.0351ms)
2026-10-13T00:50:46.3853516Z ✔ a deploy is annotated with its commit, and read back (0.23212ms)
2026-10-13T00:50:46.3853570Z ✔ the live commit: the live version's, looking through secret changes (0.43648ms)
2026-10-13T00:50:46.3853624Z ✔ Wrangler's output: pending migrations and the version a deploy made (0.36625ms)
2026-10-13T00:50:46.3853674Z ✔ the API's answers: the live commit as Wrangler's would give it (1.11603ms)
2026-10-13T00:50:46.8093852Z ✔ the API's answers: a Worker never deployed, and a refusal, never throw (502.48409ms)
2026-10-13T00:50:46.8106209Z ✔ the API is used only with the token Wrangler would be given (1.6436ms)
2026-10-13T00:50:46.8108188Z ✔ pending migrations: the folder's files less the names in d1_migrations (1.736659ms)
2026-10-13T00:50:46.8403369Z ✔ the pool runs everything, no more than its limit at once (14.87463ms)
2026-10-13T00:50:47.2271711Z ✔ self-hosting builds every Rust service the manifest says it runs (0.79423ms)
2026-10-13T00:50:47.2271796Z ✔ the self-hosting architecture page names every unit (0.24689ms)
2026-10-13T00:50:47.2271850Z ✔ the architecture's services page names every unit, with the services it binds to (5.201139ms)
2026-10-13T00:50:47.2271895Z ✔ resolveStack works on a manifest with no workspace crates or packages (5.70924ms)
2026-10-13T00:50:47.2271955Z ✔ decide: a commit older than what runs is never deployed by accident, even forced; --rollback means it (0.37898ms)
2026-10-13T00:50:47.2271997Z ✔ a deploy by hand reports to the repository on g1t, and a workflow's does not (1.8254ms)
2026-10-13T00:50:47.2272036Z ✔ a failed wrangler command is reported by its error, not its trace (0.27434ms)
2026-10-13T00:50:47.2272073Z ✔ Cloudflare failing is tried again; a mistake in what is deployed is not (0.4227ms)
2026-10-13T00:50:47.2272153Z ✔ a body that broke off is worth another try, a lockfile out of step is not (1.30451ms)
2026-10-13T00:50:47.2272191Z ✔ an install that ends without saying why, or stalls, is tried again (0.19879ms)
2026-10-13T00:50:47.2272227Z ✔ a dropped connection is tried again until the install passes (1.15899ms)
2026-10-13T00:50:47.2272241Z ✔ a real error fails at once (0.25227ms)
2026-10-13T00:50:47.2272275Z ✔ it gives up after its tries, with npm's exit code (0.27109ms)
2026-10-13T00:50:47.2272290Z ✔ a stalled install is run again (0.23363ms)
2026-10-13T00:50:47.2272326Z ✔ webhooks: the hourly purge deletes old deliveries by time (2.5559ms)
2026-10-13T00:50:47.2272362Z ✔ billing: this month's users are read from an index, not the ledger (40.461477ms)
2026-10-13T00:50:47.2272398Z ✔ events: a repository's events of one type, newest first, page by page (51.026817ms)
2026-10-13T00:50:47.2272564Z ✔ actions: a self-hosted runner's poll finds queued jobs by namespace, whatever its case (15.846189ms)
2026-10-13T00:50:47.2272638Z ✔ chat: a channel's messages and a thread's replies, newest first, page by page (2.34186ms)
2026-10-13T00:50:47.2272726Z ✔ chat: the sidebar's unread messages are read from each channel's index, after the last read (3.44538ms)
2026-10-13T00:50:47.2272784Z ✔ chat: a page's reactions are read by message, and a workspace's emoji by name (2.15475ms)
2026-10-13T00:50:47.2291064Z scheduler: g1t-webhooks (* * * * *) is still running from the last time; skipped
2026-10-13T00:50:47.3149713Z scheduler: g1t-webhooks (* * * * *): 200 {"outcome":"exception"}
2026-10-13T00:50:47.3199243Z ✔ fields read numbers, ranges, lists and steps (1.74508ms)
2026-10-13T00:50:47.3212274Z ✔ the services' crons match when hosted g1t's would fire (1.86289ms)
2026-10-13T00:50:47.3230403Z ✔ what is due is each matching cron of each service (1.03998ms)
2026-10-13T00:50:47.3240462Z ✔ a run asks Wrangler for the handler, and a slow one is not doubled (87.853844ms)
2026-10-13T00:50:47.5290341Z ✔ a deploy is announced to status.g1t.sh with the token, and without one nothing is sent (92.492925ms)
2026-10-13T00:50:47.5811293Z ✔ an announcement that fails is a warning, never a failed deploy (0.84932ms)
2026-10-13T00:50:47.5821035Z ✔ the stages run inside the window: started before, finished after, even when they throw; a dry run says nothing (0.94723ms)
2026-10-13T00:50:47.5828923Z ✔ deploy.mjs announces every deploy, and the workflow passes it the token (0.48595ms)
2026-10-13T00:50:47.5965778Z ℹ tests 70
2026-10-13T00:50:47.5966388Z ℹ suites 0
2026-10-13T00:50:47.5966680Z ℹ pass 69
2026-10-13T00:50:47.5967450Z ℹ fail 0
2026-10-13T00:50:47.5967743Z ℹ cancelled 0
2026-10-13T00:50:47.5968007Z ℹ skipped 1
2026-10-13T00:50:47.5968269Z ℹ todo 0
2026-10-13T00:50:47.5968539Z ℹ duration_ms 5768.273845
